home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.extensibility.xml.xsdl19991217; import com.extensibility.util.Debug; import com.extensibility.xml.AttributeDeclaration; import com.extensibility.xml.BaseDeclaration; import com.extensibility.xml.Comment; import com.extensibility.xml.ContentModel; import com.extensibility.xml.ContentModelTerm; import com.extensibility.xml.DTDUtilities; import com.extensibility.xml.DataTypeDeclaration; import com.extensibility.xml.ElementDeclaration; import com.extensibility.xml.ExternalGEDeclaration; import com.extensibility.xml.ExternalPEDeclaration; import com.extensibility.xml.ExternalSubset; import com.extensibility.xml.NamespaceDeclaration; import com.extensibility.xml.NotationDeclaration; import com.extensibility.xml.ParserException; import com.extensibility.xml.ProcessingInstruction; import com.extensibility.xml.SchemaIntf; import com.extensibility.xml.SchemaUtilities; import com.extensibility.xml.TypeRef; import com.extensibility.xml.URI; import com.extensibility.xml.dt.DataType; import com.extensibility.xml.dt.DataTypeFactory; import com.extensibility.xml.dt.DataTypeIntf; import com.extensibility.xml.dt.Facet; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Reader; import java.net.UnknownHostException; import java.util.Hashtable; import java.util.Stack; import java.util.Vector; import org.xml.sax.AttributeList; import org.xml.sax.HandlerBase; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.Parser; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.LocatorImpl; public final class XSDLReader extends HandlerBase implements XSDLTags { private Hashtable elemDecls; private Hashtable dtElemNames; private Hashtable currentAttrs; private ElementDeclaration currentElemDecl; private DataTypeDeclaration currentDataTypeDecl; private String topLevelElemName; private String currentElemName; private AttributeDeclaration currentAttrDecl; private Vector attrChoices; private Vector elemDeclAttrs; private Hashtable namespaces; private SchemaIntf schema; private ContentModel currentCM; private boolean isFirstLevelCM; private boolean cmClosed; private Stack cmConnectors; private Stack contentModels; private Object commentKind; private String commentContent; private boolean commentStart; private boolean optionStart; private boolean defaultStart; private String defaultContent; private boolean fixedStart; private String fixedContent; private NotationDeclaration currentNotationDecl; private ExternalGEDeclaration currentXGEDecl; private boolean inProlog = true; private Locator locator; public URI logicalURI; public XSDLReader(SchemaIntf var1) { this.schema = var1; } public void error(String var1, int var2, int var3, int var4) { ParserException var5 = new ParserException(var2, var1); var5.setSource(String.valueOf(String.valueOf(String.valueOf(String.valueOf("See Line: ").concat(String.valueOf(var3))).concat(String.valueOf(" Column:"))).concat(String.valueOf(var4))).concat(String.valueOf(" in file."))); var5.setSourceLinePos(var3); this.schema.addError(var5); } public void error(SAXParseException var1) { this.error(((SAXException)var1).getMessage(), 240, this.locator.getLineNumber(), this.locator.getColumnNumber()); } public void fatalError(SAXParseException var1) { this.error(var1); } public void setDocumentLocator(Locator var1) { this.locator = var1; } public void parse(URI var1, URI var2) throws IOException { this.logicalURI = var2; Reader var4 = null; try { Parser var3 = SchemaUtilities.getParser(); this.setDocumentLocator(new LocatorImpl()); var3.setEntityResolver(this); var3.setErrorHandler(this); var3.setDocumentHandler(this); var4 = var1.createReader(); var3.parse(new InputSource(var4)); } catch (IOException var16) { throw var16; } catch (Exception var17) { if (!(var17 instanceof IOException)) { } } finally { try { if (var4 != null) { var4.close(); } } catch (IOException var15) { } } } public void startDocument() { this.elemDecls = new Hashtable(); this.dtElemNames = new Hashtable(); this.currentAttrs = new Hashtable(); this.currentElemDecl = null; this.currentDataTypeDecl = null; this.topLevelElemName = null; this.currentAttrDecl = null; this.attrChoices = new Vector(); this.elemDeclAttrs = new Vector(); this.namespaces = new Hashtable(); this.isFirstLevelCM = true; this.cmClosed = true; this.cmConnectors = new Stack(); this.contentModels = new Stack(); this.commentKind = null; this.commentContent = null; this.commentStart = false; this.optionStart = false; this.fixedStart = false; this.defaultStart = false; this.fixedContent = null; this.defaultContent = null; } public void endDocument() { } public void processingInstruction(String var1, String var2) throws SAXException { ProcessingInstruction var3 = new ProcessingInstruction(var1, var2); if (this.inProlog) { ((BaseDeclaration)var3).setIsInProlog(true); } this.schema.insertDeclaration(var3, (BaseDeclaration)null); } private char getCurrentConnection() { return (Character)this.cmConnectors.peek(); } private ContentModelTerm getCurrentParent() { return (ContentModelTerm)this.contentModels.peek(); } public void startElement(String var1, AttributeList var2) { this.inProlog = false; this.parseElement(var1, var2); } private void saveNamespaceInfo(String var1, String var2) { int var4 = var1.indexOf(":"); if (var4 != -1) { String var5 = var1.substring(var4 + 1); NamespaceDeclaration var3 = new NamespaceDeclaration(var5, var2); this.schema.insertDeclaration(var3, (BaseDeclaration)null); this.namespaces.put(var2, var3); } } private void doSchema(AttributeList var1) { Object var2 = null; Object var3 = null; Object var4 = null; Object var5 = null; Object var6 = null; for(int var7 = 0; var7 < var1.getLength(); ++var7) { String var8 = var1.getName(var7); if (var8.equals("xmlns")) { var1.getValue(var7); } else if (var8.equals("version")) { var1.getValue(var7); } else if (var8.equals("targetNamespace")) { var1.getValue(var7); } else if (var8.equals("finalDefault")) { var1.getValue(var7); } else if (var8.equals("exactDefault")) { var1.getValue(var7); } else if (var8.startsWith("xmlns:")) { this.saveNamespaceInfo(var8, var1.getValue(var7)); } else { this.error(String.valueOf("Unrecognized attribute for 'schema' : ").concat(String.valueOf(var8)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doImport(AttributeList var1) { String var2 = null; String var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("schemaLocation")) { var2 = var1.getValue(var4); } else if (var5.equals("namespace")) { var3 = var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'import' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } Object var7 = null; URI var6 = null; if (var3 != null) { NamespaceDeclaration var8 = (NamespaceDeclaration)this.namespaces.get(var3); if (var8 == null) { this.error(String.valueOf("Namespace not declared :").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); var8 = new NamespaceDeclaration("undefinedPrefix", var3); this.schema.insertDeclaration(var8, (BaseDeclaration)null); this.namespaces.put(var3, var8); } if (var2 != null) { var6 = new URI((URI)null, var2); } if (var6 != null) { ((BaseDeclaration)var8).setURI(var6); } } else { this.error("Namespace required for 'import'", 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doInclude(AttributeList var1) { String var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("schemaLocation")) { var2 = var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'include' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var2 == null) { this.error("The 'schemaLocation' attribute is required for 'include'.", 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } else { new URI((URI)null, var2); URI var12 = new URI(this.logicalURI, var2); String var5 = DTDUtilities.makeValidName(var12.getShortName()); if (this.schema.getNamedDeclaration(var5, Class.forName("com.extensibility.xml.ParameterEntityDeclaration")) == null) { ExternalPEDeclaration var6 = new ExternalPEDeclaration(var5, (String)null, var12); ((BaseDeclaration)var6).setURI(this.logicalURI); this.schema.insertDeclaration(var6, (BaseDeclaration)null); try { int var7 = this.schema.insertSubset(var6); if (var7 > 0) { this.error(((BaseDeclaration)var6).getName(), 246, this.locator.getLineNumber(), this.locator.getColumnNumber()); } ExternalSubset var10000 = (ExternalSubset)this.schema.getNamedDeclaration(var5, Class.forName("com.extensibility.xml.ExternalSubset")); } catch (UnknownHostException var9) { this.error(var12.getFullName(), 245, this.locator.getLineNumber(), this.locator.getColumnNumber()); } catch (FileNotFoundException var10) { this.error(var12.getShortName(), 244, this.locator.getLineNumber(), this.locator.getColumnNumber()); } catch (IOException var11) { this.error(((Throwable)var11).getMessage(), 247, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } } private void doType(AttributeList var1) { Object var2 = null; String var3 = null; Object var4 = null; Object var5 = null; Object var6 = null; String var7 = null; String var8 = null; for(int var9 = 0; var9 < var1.getLength(); ++var9) { String var10 = var1.getName(var9); if (var10.equals("abstract")) { var1.getValue(var9); } else if (var10.equals("content")) { var3 = var1.getValue(var9); } else if (var10.equals("derivedBy")) { var1.getValue(var9); } else if (var10.equals("exact")) { var1.getValue(var9); } else if (var10.equals("final")) { var1.getValue(var9); } else if (var10.equals("name")) { var7 = var1.getValue(var9); } else if (var10.equals("source")) { var8 = var1.getValue(var9); } else { this.error(String.valueOf("Unrecognized attribute for 'type' : ").concat(String.valueOf(var10)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var3 == null) { var3 = "mixed"; } byte var11 = 0; this.cmClosed = false; if (var3.equals("empty")) { var11 = 3; this.cmClosed = true; } else if (var3.equals("mixed")) { var11 = 4; } else if (var3.equals("textOnly")) { var11 = 5; this.cmClosed = true; } else if (var3.equals("elementOnly")) { var11 = 6; } else { var11 = 3; } if (this.currentElemDecl == null) { if (this.elemDecls.containsKey(var7)) { this.currentElemDecl = (ElementDeclaration)this.elemDecls.get(var7); } else { this.currentElemDecl = new ElementDeclaration(var7, 3); this.currentElemDecl.setURI(this.logicalURI); this.elemDecls.put(var7, this.currentElemDecl); } this.topLevelElemName = var7; } this.currentCM = this.currentElemDecl.getContentModel(); this.currentCM.setContentModel(var11); this.isFirstLevelCM = true; if (var8 != null && this.currentElemDecl != null) { this.currentElemDecl.setDataType(this.convertDataType(var8)); } this.cmConnectors.push(new Character(',')); this.contentModels.push(this.currentCM.getRootGroup()); } private void doAnnotation(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'annotation' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doAttrGroup(AttributeList var1) { Object var2 = null; Object var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("name")) { var1.getValue(var4); } else if (var5.equals("ref")) { var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'attributeGroup' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doDataType(AttributeList var1) { Object var2 = null; Object var3 = null; String var4 = null; String var5 = null; for(int var6 = 0; var6 < var1.getLength(); ++var6) { String var7 = var1.getName(var6); if (var7.equals("abstract")) { var1.getValue(var6); } else if (var7.equals("final")) { var1.getValue(var6); } else if (var7.equals("name")) { var4 = var1.getValue(var6); } else if (var7.equals("source")) { var5 = var1.getValue(var6); } else { this.error(String.valueOf("Unrecognized attribute for 'datatype' : ").concat(String.valueOf(var7)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } DataType var8; if (var5 != null) { var8 = this.convertDataType(var5); } else { var8 = this.convertDataType("string"); } if (this.currentAttrDecl != null) { this.currentAttrDecl.setDataType(var8); } else if (var4 != null) { this.currentDataTypeDecl = new DataTypeDeclaration(var4, var8); this.currentDataTypeDecl.setURI(this.logicalURI); if (this.dtElemNames.containsKey(var4)) { this.error(String.valueOf("datatype name used more than once: ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } else { this.dtElemNames.put(var4, this.currentDataTypeDecl); } } } private void doElement(AttributeList var1) { Object var2 = null; Object var3 = null; Object var4 = null; Object var5 = null; Object var6 = null; Object var7 = null; String var8 = null; String var9 = null; String var10 = null; Object var11 = null; String var12 = null; String var13 = null; for(int var14 = 0; var14 < var1.getLength(); ++var14) { String var15 = var1.getName(var14); if (var15.equals("abstract")) { var1.getValue(var14); } else if (var15.equals("default")) { var1.getValue(var14); } else if (var15.equals("equivClass")) { var1.getValue(var14); } else if (var15.equals("exact")) { var1.getValue(var14); } else if (var15.equals("final")) { var1.getValue(var14); } else if (var15.equals("fixed")) { var1.getValue(var14); } else if (var15.equals("maxOccurs")) { var9 = var1.getValue(var14); } else if (var15.equals("minOccurs")) { var8 = var1.getValue(var14); } else if (var15.equals("name")) { var10 = var1.getValue(var14); } else if (var15.equals("nullable")) { var1.getValue(var14); } else if (var15.equals("ref")) { var12 = var1.getValue(var14); } else if (var15.equals("type")) { var13 = var1.getValue(var14); } else { this.error(String.valueOf("Unrecognized attribute for 'element' : ").concat(String.valueOf(var15)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } Object var21 = null; String var22; if (var10 != null) { var22 = var10; } else if (var12 != null) { var22 = var12; } else { var22 = "undefined"; } this.currentElemName = var22; ElementDeclaration var16; if (this.elemDecls.containsKey(var22)) { var16 = (ElementDeclaration)this.elemDecls.get(var22); } else { var16 = new ElementDeclaration(var22, 3); ((BaseDeclaration)var16).setURI(this.logicalURI); this.elemDecls.put(var22, var16); } if (this.currentElemDecl != null) { char var17 = this.getCurrentConnection(); ContentModelTerm var18 = this.getCurrentParent(); char var19 = this.getOccurance(var8, var9); ContentModelTerm var20 = new ContentModelTerm(new TypeRef(var22), var19, var17); var18.addTerm(var20); } else { this.currentElemDecl = var16; if (var13 != null) { ContentModel var23 = var16.getContentModel(); var16.setDataType(this.convertDataType(var13)); } this.topLevelElemName = var10; } } private void doGroup(AttributeList var1) { String var2 = null; String var3 = null; String var4 = null; String var5 = null; Object var6 = null; for(int var7 = 0; var7 < var1.getLength(); ++var7) { String var8 = var1.getName(var7); if (var8.equals("maxOccurs")) { var2 = var1.getValue(var7); } else if (var8.equals("minOccurs")) { var3 = var1.getValue(var7); } else if (var8.equals("name")) { var4 = var1.getValue(var7); } else if (var8.equals("order")) { var5 = var1.getValue(var7); } else if (var8.equals("ref")) { var1.getValue(var7); } else { this.error(String.valueOf("Unrecognized attribute for 'group' : ").concat(String.valueOf(var8)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } char var11; if (var5 == null) { var11 = ','; } else if (var5.equals("seq")) { var11 = ','; } else if (var5.equals("choice")) { var11 = '|'; } else if (var5.equals("all")) { var11 = ','; } else { var11 = ','; } ContentModelTerm var9 = new ContentModelTerm(); char var10 = this.getOccurance(var3, var2); var9.setOccurance(var10); var9.setConnection(this.getCurrentConnection()); if (var4 != null) { var9.setLocalTag(var4); } if (this.isFirstLevelCM) { this.getCurrentParent().setLocalTag(var4); this.getCurrentParent().setOccurance(var9.getMinOccurance(), var9.getMaxOccurance()); this.getCurrentParent().setConnection(var9.getConnection()); this.cmConnectors.pop(); this.cmConnectors.push(new Character(var11)); } else { this.getCurrentParent().addTerm(var9); this.contentModels.push(var9); this.cmConnectors.push(new Character(var11)); } this.isFirstLevelCM = false; } private void doNotation(AttributeList var1) { String var2 = null; String var3 = null; String var4 = null; for(int var5 = 0; var5 < var1.getLength(); ++var5) { String var6 = var1.getName(var5); if (var6.equals("name")) { var2 = var1.getValue(var5); } else if (var6.equals("public")) { var3 = var1.getValue(var5); } else if (var6.equals("system")) { var4 = var1.getValue(var5); } else { this.error(String.valueOf("Unrecognized attribute for 'notation' : ").concat(String.valueOf(var6)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } NotationDeclaration var7 = new NotationDeclaration(var2, var3, new URI((URI)null, var4)); this.schema.insertDeclaration(var7, (BaseDeclaration)null); this.currentNotationDecl = var7; } private void doKey(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("name")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'key' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doKeyRef(AttributeList var1) { Object var2 = null; Object var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("name")) { var1.getValue(var4); } else if (var5.equals("refer")) { var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'keyref' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doUnique(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("name")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'unique' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doAny(AttributeList var1) { Object var2 = null; Object var3 = null; Object var4 = null; for(int var5 = 0; var5 < var1.getLength(); ++var5) { String var6 = var1.getName(var5); if (var6.equals("maxOccurs")) { var1.getValue(var5); } else if (var6.equals("minOccurs")) { var1.getValue(var5); } else if (var6.equals("namespace")) { var1.getValue(var5); } else { this.error(String.valueOf("Unrecognized attribute for 'any' : ").concat(String.valueOf(var6)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doAnyAttribute(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("namespace")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'anyAttribute' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doAppInfo(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("source")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'appinfo' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } this.commentStart = true; } private void doAttribute(AttributeList var1) { String var2 = null; String var3 = null; String var4 = null; Object var5 = null; String var6 = null; String var7 = null; for(int var8 = 0; var8 < var1.getLength(); ++var8) { String var9 = var1.getName(var8); if (var9.equals("default")) { var2 = var1.getValue(var8); } else if (var9.equals("fixed")) { var3 = var1.getValue(var8); } else if (var9.equals("maxOccurs")) { var1.getValue(var8); } else if (var9.equals("minOccurs")) { var4 = var1.getValue(var8); } else if (var9.equals("name")) { var6 = var1.getValue(var8); } else if (var9.equals("type")) { var7 = var1.getValue(var8); } else { this.error(String.valueOf("Unrecognized attribute for 'attribute' : ").concat(String.valueOf(var9)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } DataType var12; if (var7 != null) { var12 = DataTypeFactory.createDataType(var7); } else { var12 = DataTypeFactory.createDataType("string"); } boolean var10 = false; if (var4 != null && var4.equals("1")) { var10 = true; } String var11 = null; if (var2 != null && var3 != null) { } if (var2 != null) { var11 = var2; } if (var3 != null) { var11 = var3; } this.currentAttrDecl = new AttributeDeclaration(this.currentElemDecl, var6, var12, (Vector)null, var10, var11); this.currentAttrDecl.setURI(this.currentElemDecl.getURI()); this.currentAttrs.put(var6, this.currentAttrDecl); if (this.currentElemDecl != null) { this.elemDeclAttrs.addElement(this.currentAttrDecl); } } private void doField(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'field' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doInfo(AttributeList var1) { Object var2 = null; Object var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("source")) { var1.getValue(var4); } else if (var5.equals("xml:lang")) { var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'info' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } this.commentStart = true; this.commentKind = "USAGE"; } private void doRestrictions(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'restrictions' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doSelector(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'selector' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doSic(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'sic' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private boolean isFacetTag(String var1) { return var1.equals("encoding") || var1.equals("enumeration") || var1.equals("length") || var1.equals("maxExclusive") || var1.equals("maxInclusive") || var1.equals("maxlength") || var1.equals("minExclusive") || var1.equals("minInclusive") || var1.equals("minlength") || var1.equals("pattern") || var1.equals("period") || var1.equals("precision") || var1.equals("scale"); } private void doFacet(String var1, AttributeList var2) { String var3 = null; for(int var4 = 0; var4 < var2.getLength(); ++var4) { String var5 = var2.getName(var4); if (var5.equals("value")) { var3 = var2.getValue(var4); } else { this.error(String.valueOf(String.valueOf(String.valueOf("Unrecognized attribute for '").concat(String.valueOf(var1))).concat(String.valueOf("' facet element : "))).concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } Object var8 = null; DataType var9; if (this.currentAttrDecl != null) { var9 = this.currentAttrDecl.getDataType(); } else { if (this.currentDataTypeDecl == null) { return; } var9 = this.currentDataTypeDecl.getDataType(); } Object var6 = null; Facet var7 = null; if (var1.equals("enumeration")) { this.attrChoices.addElement(var3); } else { Facet var10; if (var1.equals("encoding")) { var10 = new Facet(Facet.FACET_ENCODING_NAME, var3); } else if (var1.equals("length")) { var10 = new Facet(Facet.FACET_LENGTH_NAME, var3); } else if (var1.equals("maxExclusive")) { var10 = new Facet(Facet.FACET_MAX_NAME, var3); var7 = new Facet(Facet.FACET_MAXEX_NAME, "true"); } else if (var1.equals("maxInclusive")) { var10 = new Facet(Facet.FACET_MAX_NAME, var3); } else if (var1.equals("maxlength")) { var10 = new Facet(Facet.FACET_MAXLENGTH_NAME, var3); } else if (var1.equals("minExclusive")) { var10 = new Facet(Facet.FACET_MIN_NAME, var3); var7 = new Facet(Facet.FACET_MINEX_NAME, "true"); } else if (var1.equals("minInclusive")) { var10 = new Facet(Facet.FACET_MIN_NAME, var3); } else if (var1.equals("minlength")) { var10 = new Facet(Facet.FACET_MINLENGTH_NAME, var3); } else if (var1.equals("pattern")) { var10 = new Facet(Facet.FACET_PATTERN_NAME, var3); } else if (var1.equals("period")) { var10 = new Facet(Facet.FACET_PERIOD_NAME, var3); } else if (var1.equals("precision")) { var10 = new Facet(Facet.FACET_DIGITS_NAME, var3); } else { if (!var1.equals("scale")) { return; } var10 = new Facet(Facet.FACET_DECIMALS_NAME, var3); } if (var10 != null) { var9 = (DataType)var9.applyFacet(var10); } if (var7 != null) { var9 = (DataType)var9.applyFacet(var7); } if (this.currentAttrDecl != null) { this.currentAttrDecl.setDataType(var9); } else { if (this.currentDataTypeDecl == null) { return; } this.currentDataTypeDecl.setDataType(var9); } } } public void parseElement(String var1, AttributeList var2) { if (var1.equals("schema")) { this.doSchema(var2); } else if (var1.equals("import")) { this.doImport(var2); } else if (var1.equals("include")) { this.doInclude(var2); } else if (var1.equals("type")) { this.doType(var2); } else if (var1.equals("annotation")) { this.doAnnotation(var2); } else if (var1.equals("attributeGroup")) { this.doAttrGroup(var2); } else if (var1.equals("datatype")) { this.doDataType(var2); } else if (var1.equals("element")) { this.doElement(var2); } else if (var1.equals("group")) { this.doGroup(var2); } else if (var1.equals("notation")) { this.doNotation(var2); } else if (var1.equals("key")) { this.doKey(var2); } else if (var1.equals("keyref")) { this.doKeyRef(var2); } else if (var1.equals("unique")) { this.doUnique(var2); } else if (var1.equals("any")) { this.doAny(var2); } else if (var1.equals("anyAttribute")) { this.doAnyAttribute(var2); } else if (var1.equals("appInfo")) { this.doAppInfo(var2); } else if (var1.equals("attribute")) { this.doAttribute(var2); } else if (var1.equals("field")) { this.doField(var2); } else if (var1.equals("info")) { this.doInfo(var2); } else if (var1.equals("restrictions")) { this.doRestrictions(var2); } else if (var1.equals("selector")) { this.doSelector(var2); } else if (var1.equals("sic")) { this.doSic(var2); } else if (this.isFacetTag(var1)) { this.doFacet(var1, var2); } else { this.error(var1, 239, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void saveElementDecl() { if (this.currentElemDecl != null) { this.schema.insertDeclaration(this.currentElemDecl, (BaseDeclaration)null); this.currentElemDecl = null; for(int var1 = 0; var1 < this.elemDeclAttrs.size(); ++var1) { AttributeDeclaration var2 = (AttributeDeclaration)this.elemDeclAttrs.elementAt(var1); this.schema.insertDeclaration(var2, (BaseDeclaration)null); } this.elemDeclAttrs.removeAllElements(); this.currentAttrs.clear(); if (!this.contentModels.empty()) { this.contentModels.removeAllElements(); } if (!this.cmConnectors.empty()) { this.cmConnectors.removeAllElements(); } this.cmClosed = true; this.isFirstLevelCM = false; this.topLevelElemName = null; } } public void endElement(String var1) { if (var1.equals("type")) { this.saveElementDecl(); } else if (var1.equals("group")) { if (this.cmConnectors.size() > 1) { this.cmConnectors.pop(); } if (this.contentModels.size() > 1) { this.contentModels.pop(); } } else if (var1.equals("element")) { if (this.currentElemName != null && this.currentElemName.equals(this.topLevelElemName)) { this.saveElementDecl(); } this.currentElemName = null; } else if (var1.equals("attribute")) { if (this.attrChoices.size() > 0) { Vector var2 = new Vector(); for(int var3 = 0; var3 < this.attrChoices.size(); ++var3) { var2.addElement(this.attrChoices.elementAt(var3)); } this.currentAttrDecl.setChoices(var2); } this.currentAttrDecl = null; this.attrChoices.removeAllElements(); } else if (var1.equals("datatype")) { if (this.currentDataTypeDecl != null) { if (this.attrChoices.size() > 0) { Vector var6 = new Vector(); for(int var7 = 0; var7 < this.attrChoices.size(); ++var7) { var6.addElement(this.attrChoices.elementAt(var7)); } Facet var4 = new Facet(Facet.FACET_ENUM_NAME, var6); DataType var5 = this.currentDataTypeDecl.getDataType(); var5 = (DataType)var5.applyFacet(var4); this.currentDataTypeDecl.setDataType(var5); } this.schema.insertDeclaration(this.currentDataTypeDecl, (BaseDeclaration)null); } this.currentDataTypeDecl = null; if (this.currentAttrDecl == null) { this.attrChoices.removeAllElements(); } } else if (var1.equals("appInfo") || var1.equals("info")) { this.commentStart = false; if (this.currentAttrDecl != null) { this.currentAttrDecl.addComment(new Comment((String)this.commentKind, this.commentContent)); } else if (this.currentElemDecl != null) { this.currentElemDecl.addComment(new Comment((String)this.commentKind, this.commentContent)); } else if (this.currentDataTypeDecl != null) { this.currentDataTypeDecl.addComment(new Comment((String)this.commentKind, this.commentContent)); } else { this.schema.addComment(new Comment((String)this.commentKind, this.commentContent)); } this.commentKind = null; this.commentContent = null; } } public void characters(char[] var1, int var2, int var3) throws SAXException { if (this.commentStart) { this.commentContent = String.valueOf(var1, var2, var3); } } private DataType convertDataType(String var1) { String var2 = DataTypeIntf.STRING; if (var1 != null && var1.equals("binary")) { var2 = DataTypeIntf.BINBASE64; } if (var1.equals("integer")) { var2 = DataTypeIntf.INT; } else if (var1.equals("double")) { var2 = DataTypeIntf.R8; } else if (var1.equals("timeInstant")) { var2 = DataTypeIntf.DATETIME; } else { var2 = var1; } return DataTypeFactory.createDataType(var2); } protected char getOccurance(Object var1, Object var2) { char var3 = 0; if (var1 == null) { var1 = new String("1"); } if (var2 == null) { var2 = new String("1"); } if (((String)var1).equals("1") && ((String)var2).equals("1")) { var3 = 0; } else if (((String)var1).equals("0") && ((String)var2).equals("1")) { var3 = '?'; } else if (((String)var1).equals("0") && ((String)var2).equals("*")) { var3 = '*'; } else if (((String)var1).equals("1") && ((String)var2).equals("*")) { var3 = '+'; } else { Debug.assert(false, String.valueOf(String.valueOf(String.valueOf(String.valueOf("minOccur=").concat(String.valueOf((String)var1))).concat(String.valueOf(", maxOccur="))).concat(String.valueOf((String)var2))).concat(String.valueOf(" not implemented yet!"))); } return var3; } }